home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / il_c / ilMpNode.z / ilMpNode
Encoding:
Text File  |  2002-10-03  |  7.9 KB  |  199 lines

  1.  
  2.  
  3.  
  4. iiiillllMMMMppppNNNNooooddddeeee((((3333))))        IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll        iiiillllMMMMppppNNNNooooddddeeee((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      iiiillllMMMMppppNNNNooooddddeeee - base class for MP dependency graph
  10.  
  11. IIIINNNNHHHHEEEERRRRIIIITTTTSSSS FFFFRRRROOOOMMMM
  12.      This is a base class
  13.  
  14. HHHHEEEEAAAADDDDEEEERRRR FFFFIIIILLLLEEEE
  15.      #include <il/ilCdefs.h>
  16.  
  17. CCCCLLLLAAAASSSSSSSS DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  18.      ilMpNode is the base class defining a dependency graph for parallel
  19.      processing.  ilMpManager and ilMpRequest are both derived from this
  20.      class.  Those classes provide a generalized method to execute work in
  21.      parallel using a configurable number of threads created with sssspppprrrroooocccc().
  22.  
  23. CCCCLLLLAAAASSSSSSSS MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN SSSSUUUUMMMMMMMMAAAARRRRYYYY
  24.      SSSSttttaaaattttuuuussss mmmmeeeetttthhhhooooddddssss
  25.  
  26.           ilStatus ilMpNodeGetStatus(ilMpNode *obj)
  27.  
  28.      OOOOtttthhhheeeerrrr mmmmeeeemmmmbbbbeeeerrrr qqqquuuueeeerrrriiiieeeessss
  29.  
  30.           int ilMpNodeGetDepth(ilMpNode *obj)
  31.           ilMpState ilMpNodeGetState(ilMpNode *obj)
  32.           ilMpNode* ilMpNodeGetParent(ilMpNode *obj)
  33.  
  34.      TTTTiiiimmmmiiiinnnngggg qqqquuuueeeerrrriiiieeeessss
  35.  
  36.           float ilMpNodeGetProcessingTime(ilMpNode *obj)
  37.           void ilMpNodeAddProcessingTime(ilMpNode *obj, float selfDelta,
  38.                                          float parentDelta)
  39.           float ilMpNodeGetTimingWeight(ilMpNode *obj)
  40.           void ilMpNodeSetTimingWeight(ilMpNode *obj, float weight)
  41.  
  42.      AAAAbbbboooorrrrtttt ccccoooonnnnttttrrrroooollll
  43.  
  44.           int ilMpNodeIsAborting(ilMpManager *obj)
  45.           int ilMpNodeInhibitAbort(ilMpManager *obj)
  46.  
  47.  
  48. FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  49.      aaaaddddddddPPPPrrrroooocccceeeessssssssiiiinnnnggggTTTTiiiimmmmeeee(((())))
  50.  
  51.           void ilMpNodeAddProcessingTime(ilMpNode *obj, float selfDelta,
  52.                                          float parentDelta)
  53.  
  54.  
  55.           This method accumulates more processing time for this node and
  56.           optionally our parent (time can be shifted from self to parent by
  57.           specifying _s_e_l_f_D_e_l_t_a = -_p_a_r_e_n_t_D_e_l_t_a).
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. iiiillllMMMMppppNNNNooooddddeeee((((3333))))        IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll        iiiillllMMMMppppNNNNooooddddeeee((((3333))))
  71.  
  72.  
  73.  
  74.      ggggeeeettttDDDDeeeepppptttthhhh(((())))
  75.  
  76.           int ilMpNodeGetDepth(ilMpNode *obj)
  77.  
  78.  
  79.           This method returns the distance from the top of the node hierarchy
  80.           for this node, only requests are counted in the depth; managers are
  81.           effectively invisible. The depth is used to encourage depth first
  82.           building of the dependency graph.
  83.  
  84.      ggggeeeettttPPPPaaaarrrreeeennnntttt(((())))
  85.  
  86.           ilMpNode* ilMpNodeGetParent(ilMpNode *obj)
  87.  
  88.  
  89.           This method returns the parent for this node; ilMpRequest's always
  90.           have ilMpManager's as parents, ilMpManager's can have either type of
  91.           ilMpNode as parents.
  92.  
  93.      ggggeeeettttPPPPrrrroooocccceeeessssssssiiiinnnnggggTTTTiiiimmmmeeee(((())))
  94.  
  95.           float ilMpNodeGetProcessingTime(ilMpNode *obj)
  96.  
  97.  
  98.           This method returns the inclusive time to process this node and it's
  99.           children; for requests this includes read/compute/graphics process
  100.           times but not prepare/finish, for managers this includes the
  101.           completion callback time.
  102.  
  103.      ggggeeeettttSSSSttttaaaatttteeee(((())))
  104.  
  105.           ilMpState ilMpNodeGetState(ilMpNode *obj)
  106.  
  107.  
  108.           This method returns the current "state" for this node, possible
  109.           states are:
  110.  
  111.           _i_l_M_p_I_n_i_t        under construction
  112.  
  113.           _i_l_M_p_P_r_e_p        just constructed, waiting to be prepared
  114.  
  115.           _i_l_M_p_W_a_i_t        waiting for dependents to complete
  116.  
  117.           _i_l_M_p_R_e_a_d        waiting to read input data
  118.  
  119.           _i_l_M_p_G_r_a_p_h_i_c_s    ready to be rendered
  120.  
  121.           _i_l_M_p_C_o_m_p_u_t_e     ready to be computed
  122.  
  123.           _i_l_M_p_P_a_r_k_e_d      waiting on another request doing our work for us
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. iiiillllMMMMppppNNNNooooddddeeee((((3333))))        IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll        iiiillllMMMMppppNNNNooooddddeeee((((3333))))
  137.  
  138.  
  139.  
  140.           _i_l_M_p_F_i_n_i_s_h      ready to do finish processing
  141.  
  142.           _i_l_M_p_D_o_n_e        delete the request.
  143.  
  144.      ggggeeeettttSSSSttttaaaattttuuuussss(((())))
  145.  
  146.           ilStatus ilMpNodeGetStatus(ilMpNode *obj)
  147.  
  148.  
  149.           Returns the current status of this node.
  150.  
  151.      ggggeeeettttTTTTiiiimmmmiiiinnnnggggWWWWeeeeiiiigggghhhhtttt(((())))
  152.  
  153.           float ilMpNodeGetTimingWeight(ilMpNode *obj)
  154.  
  155.  
  156.           This method returns the weighting to apply to this node's processing
  157.           time when summing it into the parent node (default weight is 1).
  158.  
  159.      iiiinnnnhhhhiiiibbbbiiiittttAAAAbbbboooorrrrtttt(((())))
  160.  
  161.           int ilMpNodeInhibitAbort(ilMpManager *obj)
  162.  
  163.  
  164.           This method prevents this node and all of its dependents from being
  165.           aborted when the aaaabbbboooorrrrtttt() method is called on a top level manager
  166.           that has this node as a direct or indirect dependent.
  167.  
  168.      iiiissssAAAAbbbboooorrrrttttiiiinnnngggg(((())))
  169.  
  170.           int ilMpNodeIsAborting(ilMpManager *obj)
  171.  
  172.  
  173.           This method returns true if this node is in the process of aborting.
  174.           Requests may want to check this periodically during long operations
  175.           to avoid wasted work.
  176.  
  177.      sssseeeettttTTTTiiiimmmmiiiinnnnggggWWWWeeeeiiiigggghhhhtttt(((())))
  178.  
  179.           void ilMpNodeSetTimingWeight(ilMpNode *obj, float weight)
  180.  
  181.  
  182.           This method sets the weighting to apply to this node's processing
  183.           time when summing it into the parent node (default weight is 1).
  184.  
  185. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  186.      ilMpManager(3), ilMpRequest(3)
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.